package com.cloudbroker.bcs.platform.dav.bizapi.t2service.chat;

import com.cloudbroker.bcs.common.entity.HSBCPSBackNumVO;
import com.cloudbroker.bcs.common.entity.HSBCPSBackVO;
import com.cloudbroker.bcs.platform.dav.bizapi.constants.IFSFunctionIdsNew;
import com.cloudbroker.bcs.platform.dav.bizapi.service.base.vo.HSBCPSVO;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.result.CCRoomOperResult;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.result.ChatMsgPageResult;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.result.ChatTopicListResult;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.result.LiveBroadcastUrlDetailResult;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.result.SchemeColorValueResult;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.result.TenantInfoResult;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.BrokerInfoBackForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.BrokerInfoNologinBackForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.BrokerInfoNologinForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.CCRoomInfoFrom;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.CCRoomOperInfoForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.CCRoomStatusForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.ChatHisBackForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.ChatRoomInfoBackForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.ChatRoomSetForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.ChatTopicForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.ChatTopicListForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.GetCacheChatMsgForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.GetHisChatMsgForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.HisChatDelForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.LiveBroadcastUrlForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.RewardNumBackForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.SchemeColorSelectForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.SetHisChatForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.TenantKeyForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.UserBlockForm;
import com.cloudbroker.bcs.platform.dav.bizapi.service.chat.vo.UserGagForm;
import com.hundsun.jresplus.remoting.impl.annotation.Service;
import com.hundsun.jresplus.remoting.impl.annotation.ServiceModule;
import com.hundsun.jresplus.remoting.impl.annotation.ServiceParam;

@ServiceModule
public interface ChatT2BizService {
    
    /**
     * 获取大V个人信息
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_BROKER_INFO_QRY, desc = "获取大V个人信息")
    public BrokerInfoBackForm queryBrokerInfo(@ServiceParam("param") HSBCPSVO param);
    
    /**
     * 获取大V个人信息（未登录获取昵称）
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_BROKER_INFO_QRY_NOLOGIN, desc = "获取大V个人信息（未登录获取昵称）")
    public BrokerInfoNologinBackForm queryBrokerInfoNologin(@ServiceParam("param") BrokerInfoNologinForm param);
    
    /**
     * 粉丝禁言/取消
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_USER_GAG, desc = "粉丝禁言")
    public HSBCPSBackVO funcUserGag(@ServiceParam("param") UserGagForm param);
    
    /**
     * 查询当日打赏次数
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_REWARD_NUM_GET, desc = "当日打赏次数")
    public RewardNumBackForm funcRewardNumGet(@ServiceParam("param") HSBCPSVO param);
    
    /**
     * 聊天室信息设置
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_CHATROOM_SET, desc = "聊天室信息设置")
    public HSBCPSBackVO funcChatroomSet(@ServiceParam("param") ChatRoomSetForm param);
    
    /**
     * 聊天室信息查询
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_CHATROOM_INFO, desc = "聊天室信息查询")
    public ChatRoomInfoBackForm funcChatroomInfo(@ServiceParam("param") HSBCPSVO param);
    
    /**
     * 聊天话题设置
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_CHATTING_TOPIC_SET, desc = "聊天话题设置")
    public HSBCPSBackVO funcChattingTopicSet(@ServiceParam("param") ChatTopicForm param);
    
    /**
     * 记录聊天信息
     * @param param
     * @return
     */
    @Service(functionId = "5070899", desc = "记录聊天信息")
    public HSBCPSBackVO funcSetHisChat(@ServiceParam("param") SetHisChatForm param);
    
    /**
     * 获取聊天历史记录
     * @param param
     * @return
     */
    @Service(functionId = "5070898", desc = "从缓存获取聊天历史记录")
    public ChatHisBackForm funcGetHisChat(@ServiceParam("param") GetCacheChatMsgForm param);
    /**
     * 获取聊天历史记录
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_CHAT_MSG_PREVIEW, desc = "从数据库查询聊天历史记录")
    public ChatMsgPageResult funcPreviewHisChat(@ServiceParam("param") GetHisChatMsgForm param);
    /**
     * 获取聊天历史记录
     * @param param
     * @return
     */
    @Service(functionId =  IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_CHAT_MSG_EXPORT, desc = "导出聊天历史记录")
    public ChatHisBackForm funcExportHisChat(@ServiceParam("param") GetHisChatMsgForm param);
    /**
     * 大V设置前段主题方案
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_SCHEME_COLOR_SELECT, desc = "大V设置前段主题方案")
    public HSBCPSBackVO funcSchemeColorSelect(SchemeColorSelectForm param);
    
    /**
     * 大V直播地址设置
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_LIVE_BROADCAST_URL_SET, desc = "大V直播地址设置")
    public HSBCPSBackVO funcLiveBroadcastUrlSet(LiveBroadcastUrlForm param);
    
    /**
     * 聊天室视频直播获取
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_LIVE_BROADCAST_URL_GET, desc = "大V直播地址设置")
    public LiveBroadcastUrlDetailResult funcLiveBroadcastUrlGet(HSBCPSVO param);
    
    /**
     * 聊天室颜色方案设置查询
     * @param param
     * @return
     */
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_SCHEME_COLOR_USED_GET, desc = "聊天室颜色方案设置查询")
    public SchemeColorValueResult funcSchemeColorUsedGet(HSBCPSVO param);
    
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_NEW_MESSAGE_NUM, desc = "获取讨论区新消息数目")
    public HSBCPSBackNumVO funcNewMessageNum(HSBCPSVO form);
    
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_CLEAR_MESSAGE_NUM, desc = "清空讨论区新消息数目")
    public HSBCPSBackVO funcClearMessageNum(HSBCPSVO form);
    
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_USER_BLOCK, desc = "用户拉黑/取消")
    public HSBCPSBackVO funcUserBlock(UserBlockForm form);

    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_GET_CHAT_TOPIC_LIST, desc = "读取直播话题列表")
    public ChatTopicListResult funcGetChattingTopicList(ChatTopicListForm form);
    
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_SET_CC_ROOM_ID, desc = "设置CCLive聊天室ID")
    public HSBCPSBackVO funcSetCCRoomId(CCRoomInfoFrom form);
    
    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_OPERATE_CC_ROOM, desc = "转发CCLive聊天室请求")
    public CCRoomOperResult funcOperateCCRoom(CCRoomOperInfoForm form);

    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_TENANT_INFO_GET, desc = "获取租户基础信息")
    public TenantInfoResult funcTenantInfoGet(TenantKeyForm form);

    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_SET_CC_ROOM_STATUS, desc = "关闭/开启CCLive聊天室")
    public HSBCPSBackVO funcSetCcRoomStatus(CCRoomStatusForm form);

    @Service(functionId = IFSFunctionIdsNew.IFSDavChatFuncIds.FUNC_HIS_CHAT_DEL, desc = "删除聊天记录")
    public HSBCPSBackVO funcHisChatDel(HisChatDelForm form);

}
